package com.jozen.modelbase.netwoek.util;

import android.Manifest;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.os.Build;

import com.hjq.permissions.OnPermissionCallback;
import com.hjq.permissions.XXPermissions;


import java.util.ArrayList;
import java.util.List;

/**
 * 权限管理
 */
public class PermissionUtils {
    private Activity activity;
    // 声明一个集合，在后面的代码中用来存储用户拒绝授权的权
    private ArrayList<String> mPermissionList = new ArrayList<>();

    public PermissionUtils(Activity activity) {
        this.activity = activity;
    }

    private String[] permissions = new String[]{
//            Manifest.permission.CAMERA,//相机权限
//            Manifest.permission.MANAGE_EXTERNAL_STORAGE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE,//写的权限
            Manifest.permission.READ_EXTERNAL_STORAGE,//读的权限
            Manifest.permission.READ_CONTACTS//打电话的权限（读取手机联系人权限）
//            Manifest.permission.RECORD_AUDIO,//音频权限
//            Manifest.permission.READ_PHONE_STATE//读取手机号码，IMEI,IMSI权限
    };

    public void permission(int index) {
        // 版本判断。当手机系统大于 23 时，才有必要去判断权限是否获取
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            // 检查该权限是否已经获取
            int i = activity.checkSelfPermission(permissions[index]);
            // 权限是否已经 授权 GRANTED---授权  DINIED---拒绝
            if (i != PackageManager.PERMISSION_GRANTED) {
                // 如果没有授予该权限，就去提示用户请求
                mPermissionList.clear();
                for (int j = 0; j < permissions.length; j++) {
                    if (activity.checkSelfPermission(permissions[j]) != PackageManager.PERMISSION_GRANTED) {
                        mPermissionList.add(permissions[j]);
                    }
                }
                if (mPermissionList.isEmpty()) {//未授予的权限为空，表示都授予了
                    MyToastUtil.show("已经授权");
                } else {//请求权限方法
                    String[] permissions = mPermissionList.toArray(new String[mPermissionList.size()]);//将List转为数组
                    activity.requestPermissions(permissions, index);
                }
            }
        }
    }


    /**
     * 获取读写权限方法
     */
    public void getWRPermission() {
        XXPermissions.with(activity).permission(Manifest.permission.MANAGE_EXTERNAL_STORAGE).request(new OnPermissionCallback() {
            @Override
            public void onGranted(List<String> permissions, boolean all) {
                if (all) {
//                    LogUtils.d("权限已成功拿到，可进行业务开发");
                } else {
//                    LogUtils.d("部分权限被拒绝了，可能有些功能无法正常使用");
                }
            }

            @Override
            public void onDenied(List<String> permissions, boolean never) {
                if (never) {
//                    LogUtils.d("被永久拒绝了权限，需要手动到设置页去更改权限才可正常使用");
                    // 如果是被永久拒绝就跳转到应用权限系统设置页面
                    XXPermissions.startPermissionActivity(activity, permissions);
                } else {
//                    LogUtils.d("权限获取失败了！");
                }
            }
        });
    }

}
